package org.bear.array;

import java.util.Arrays;

/*
56.合井区间
以数组 intervals 表示若干个区间的集合，其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间，
并返回 一个不重叠的区间数组，该数组需恰好覆盖输入中的所有区间 。
示例 1：
输入：intervals = [[1,3],[2,6],[8,10],[15,18]]
输出：[[1,6],[8,10],[15,18]]
解释：区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].
 */
public class Merge {

    public int[][] merge(int[][] intervals) {
        Arrays.sort(intervals, (a, b) -> a[0] - b[0]);
        int i = 0;
        while (i < intervals.length){
            if (intervals[i]==null){
                i++;
                continue;
            }
            int j = i + 1;
            while (j<intervals.length && intervals[i][1]>=intervals[j][0]){
                intervals[i][1] = Math.max(intervals[i][1], intervals[j][1]);
                intervals[j] = null;
                j++;
            }
            i = j;
        }

        int n=0;
        for(int m=0; m<intervals.length; m++){
            if (intervals[m]!=null){
                intervals[n] = intervals[m];
                n++;
            }
        }
        return Arrays.copyOf(intervals, n);
    }


    public static void main(String[] args) {
        Merge merge = new Merge();
        int[][] merge1 = merge.merge(new int[][]{{1, 3}, {15, 18}, {2, 6}, {8, 10}});
        System.out.println(1);
    }
}
